#!/usr/bin/env bash
set -euo pipefail

if ! command -v pkg-config >/dev/null 2>&1; then
  echo "[ERROR] pkg-config 未安装，无法编译 Modbus RTU 测试工具" >&2
  exit 1
fi

if ! pkg-config --exists libmodbus; then
  echo "[ERROR] libmodbus 未安装，请先安装 libmodbus-dev" >&2
  exit 1
fi

if [[ $# -lt 7 ]]; then
  cat <<'USAGE'
用法: scripts/test_modbus_rtu.sh <serial> <baud> <parity> <data_bits> <stop_bits> <slave_id> <address> [count]
示例: scripts/test_modbus_rtu.sh /dev/ttyUSB0 9600 N 8 1 1 100 4

说明:
- serial     : 串口设备路径，例如 /dev/ttyUSB0
- baud       : 波特率，例如 9600
- parity     : 校验位 (N/E/O)
- data_bits  : 数据位 (5~8)
- stop_bits  : 停止位 (1 或 2)
- slave_id   : 从站地址
- address    : 起始寄存器地址
- count      : 读取长度 (可选，默认 1)
USAGE
  exit 1
fi

PROJECT_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
BUILD_DIR="$PROJECT_ROOT/build/tools"
mkdir -p "$BUILD_DIR"

TARGET="$BUILD_DIR/test_modbus_rtu"
SOURCES="$PROJECT_ROOT/src/tools/test_modbus_rtu.cpp"

if [[ ! -f "$TARGET" || "$TARGET" -ot "$SOURCES" ]]; then
  echo "[INFO] 编译 Modbus RTU 测试工具..."
  g++ -std=c++17 "$SOURCES" -o "$TARGET" $(pkg-config --cflags --libs libmodbus)
  echo "[INFO] 可执行文件生成: $TARGET"
fi

"$TARGET" "$@"
